package com.aiwiown.snackmq.common.metrics;

import com.codahale.metrics.Meter;

/**
 * 负责记录和发射消息相关指标的类。
 * 使用 Dropwizard Metrics 的 Meter 来高效地计算速率。
 */
public class MessageMetricEmitter {

    private final Meter messagesIn;

    public MessageMetricEmitter() {
        this.messagesIn = new Meter();
    }


    /**
     * 获取最近一分钟的平均速率 (TPS)。
     * @return 每秒消息数
     */
    public double getOneMinuteRate() {
        return messagesIn.getOneMinuteRate();
    }

    /**
     * 标记 n 条消息已被生产（写入）。
     * @param n 消息数量
     */
    public void markMessagesProduced(long n) {
        messagesIn.mark(n);
    }

    /**
     * 【新增】获取自启动以来已记录的消息总数。
     * @return 消息总数
     */
    public long getTotalCount() {
        return messagesIn.getCount();
    }
}